#ifndef _SPI_PIN_CONF_H_
#define _SPI_PIN_CONF_H_

#include "nrf_gpio.h"



#define SO_Read         nrf_gpio_pin_read(SPI_SO)

#define SO SO_Read


#define SPI_CLK         25      //  CLK
#define SPI_CS          17      //  CS
#define SPI_IO0         28      //  SDI
#define SPI_IO1         16      //  SDO
#define SPI_IO2         13      //  WP
#define SPI_IO3         22      //  HOLD

#define SPI_CLK_0       NRF_GPIO->OUTCLR = (1UL << SPI_CLK)
#define SPI_CLK_1       NRF_GPIO->OUTSET = (1UL << SPI_CLK)

#define SPI_CS_0        NRF_GPIO->OUTCLR = (1UL << SPI_CS)
#define SPI_CS_1        NRF_GPIO->OUTSET = (1UL << SPI_CS)

#define SPI_IO0_0       NRF_GPIO->OUTCLR = (1UL << SPI_IO0)
#define SPI_IO0_1       NRF_GPIO->OUTSET = (1UL << SPI_IO0)

#define SPI_IO1_0       NRF_GPIO->OUTCLR = (1UL << SPI_IO1)
#define SPI_IO1_1       NRF_GPIO->OUTSET = (1UL << SPI_IO1)

#define SPI_IO2_0       NRF_GPIO->OUTCLR = (1UL << SPI_IO2)
#define SPI_IO2_1       NRF_GPIO->OUTSET = (1UL << SPI_IO2)

#define SPI_IO3_0       NRF_GPIO->OUTCLR = (1UL << SPI_IO3)
#define SPI_IO3_1       NRF_GPIO->OUTSET = (1UL << SPI_IO3)

#define SPI_IO0_WRITE(x)       nrf_gpio_pin_write(SPI_IO0, x)
#define SPI_IO1_WRITE(x)       nrf_gpio_pin_write(SPI_IO1, x)
#define SPI_IO2_WRITE(x)       nrf_gpio_pin_write(SPI_IO2, x)
#define SPI_IO3_WRITE(x)       nrf_gpio_pin_write(SPI_IO3, x)


#define SPI_IO0_READ    ((NRF_GPIO->IN >> SPI_IO0) & 1UL)
#define SPI_IO1_READ    ((NRF_GPIO->IN >> SPI_IO1) & 1UL)
#define SPI_IO2_READ    ((NRF_GPIO->IN >> SPI_IO2) & 1UL)
#define SPI_IO3_READ    ((NRF_GPIO->IN >> SPI_IO3) & 1UL)


void set_io_in(void)
{
    nrf_gpio_cfg_input(SPI_IO0, NRF_GPIO_PIN_NOPULL);
    nrf_gpio_cfg_input(SPI_IO1, NRF_GPIO_PIN_NOPULL);
    nrf_gpio_cfg_input(SPI_IO2, NRF_GPIO_PIN_NOPULL);
    nrf_gpio_cfg_input(SPI_IO3, NRF_GPIO_PIN_NOPULL);
}

void set_io_out(void)
{
    nrf_gpio_cfg_output(SPI_IO0);
    nrf_gpio_cfg_output(SPI_IO1);
    nrf_gpio_cfg_output(SPI_IO2);
    nrf_gpio_cfg_output(SPI_IO3);
//    SPI_IO3_1;
}

#endif
